/*
 * ImageCache.h
 *
 *  Created on: 20/10/2009
 *      Author: marcos
 */

#ifndef IMAGECACHE_H_
#define IMAGECACHE_H_

#include <string>
#include <SDL/SDL.h>
#include "util/HashMap.h"

namespace gui {

/* @class ImageCache
 * Representa una cache de imagenes.
 * La idea es tener optimizar el proceso de carga de imagenes cacheando las
 * imagenes cuando se necesiten en un hash interno.
 */
class ImageCache {
public:
	ImageCache();
	virtual ~ImageCache();

	/* Si la imagen esta en el cache (hash) la devuelve.
	 * Si la imagen no esta en el cache la carga de disco y la devuelve. */
	virtual SDL_Surface* getImage(std::string filename);

	virtual void freeImage(std::string filename);

protected:
	util::HashMap<std::string, SDL_Surface>* hash;

	/* Carga una archivo de imagen de disco */
	virtual SDL_Surface* loadImage(std::string* filename);
};

}
#endif /* IMAGECACHE_H_ */

